package com.vf.activity.mapper;

import java.util.List;

import com.vf.activity.domain.ActivityApplications;
import com.vf.activity.domain.DTO.ActivitiesDTO;
import com.vf.activity.domain.DTO.ApplicationsDTO;
import com.vf.activity.domain.VO.AddActivityVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 活动参与申请Mapper接口
 *
 * @author LBS
 * @date 2025-06-04
 */
@Mapper
public interface ActivityAppMapper {
    /**
     * 查询活动参与申请
     *
     * @param applicationId 活动参与申请主键
     * @return 活动参与申请
     */
    public ActivityApplications selectActivityApplicationsByApplicationId(Long applicationId);

    /**
     * 查询活动参与申请列表
     *
     * @param activityApplications 活动参与申请
     * @return 活动参与申请集合
     */
    public List<ActivityApplications> selectActivityApplicationsList(ActivityApplications activityApplications);

    /**
     * 新增活动参与申请
     *
     * @param activityApplications 活动参与申请
     * @return 结果
     */
    public int insertActivityApplications(ActivityApplications activityApplications);

    /**
     * 修改活动参与申请
     *
     * @param activityApplications 活动参与申请
     * @return 结果
     */
    public int updateActivityApplications(ActivityApplications activityApplications);

    /**
     * 删除活动参与申请
     *
     * @param applicationId 活动参与申请主键
     * @return 结果
     */
    public int deleteActivityApplicationsByApplicationId(Long applicationId);

    /**
     * 批量删除活动参与申请
     *
     * @param applicationIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteActivityApplicationsByApplicationIds(Long[] applicationIds);

    /**
     * 根据用户ID获取活动申请列表
     *
     * @param userId 用户ID
     * @return 活动申请列表
     */
    List<ApplicationsDTO> getActivityApplicationsByUserId(Long userId);

    /**
     * 根据用户ID获取活动列表
     *
     * @param userId 用户ID
     * @return 活动列表
     */
    List<ActivitiesDTO> getActivityByUserId(Long userId);

    /**
     * 根据用户ID获取已参加的活动列表
     *
     * @param userId 用户ID
     * @return 已参加的活动列表
     */
    List<ApplicationsDTO> getActivityJoinByUserId(Long userId);

    /**
     * 根据用户ID获取特定状态的活动列表
     *
     * @param userId 用户ID
     * @return 特定状态的活动列表
     */
    List<ApplicationsDTO> getActivityPByUserId(Long userId);

    /**
     * 更新活动申请状态为未通过
     *
     * @param applicationId 申请ID
     * @return 更新影响的行数
     */
    int updateActivityApplicationsNoPass(Long applicationId);

    /**
     * 更新活动申请状态为通过
     *
     * @param applicationId 申请ID
     * @return 更新影响的行数
     */
    int updateActivityApplicationsPass(Long applicationId);

    /**
     * 用户参加活动
     *
     * @param addActivityVO 用户参加活动的信息
     * @return 影响的行数
     */
    int joinActivity(AddActivityVO addActivityVO);

    int addImages(@Param("activityId") Long activityId,@Param("images") String images);
}
